package com.bestcem.xm.deliver.util;

import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.bestcem.xm.common.core.constant.ReqErrorCodeConstants;
import com.bestcem.xm.common.core.domain.web.ServiceResult;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RegExUtils;

import java.io.File;
import java.util.List;

import static com.bestcem.xm.deliver.util.DeliverConstant.FULL_TYPE_LIST;
import static com.bestcem.xm.deliver.util.DeliverConstant.TYPE_LIMIT_LIST;

@Slf4j
@UtilityClass
public class CommonUtil {
    /**
     * 检查上传文件后缀名
     *
     * @param fileName  上传文件名 xxx.txt
     * @param typeLimit 文件类型: upload_enums.TYPE_LIMIT_LIST
     */
    public ServiceResult<?> checkExt(String fileName, String typeLimit) {
        fileName = fileName.substring(fileName.lastIndexOf('.') + 1);
        List<String> extList = TYPE_LIMIT_LIST.getOrDefault(typeLimit, FULL_TYPE_LIST);
        if (!extList.contains(fileName)) {
            return ServiceResult.fail(ReqErrorCodeConstants.FILE_TYPE_ERROR, "filetype not allowed");
        }
        return ServiceResult.success();
    }

    /**
     * 生成二维码
     */
    public void getQrCodeImg(String content, File file) {
        //if (StringUtils.isEmpty(imgType)) {
        //    imgType = "png";
        //}
        QrConfig config = new QrConfig(300, 300);
        // 设置边距，既二维码和背景之间的边距
        config.setMargin(1);
//		// 设置前景色，既二维码颜色（青色）
//		config.setForeColor(Color.black.getRGB());
//		// 设置背景色（灰色）
//		config.setBackColor(Color.GRAY.getRGB());
        // 二维码附带logo
//        config.setImg("D:/uploadfiles/tgz_lvsetubiao.jpg");
        // 生成二维码到文件，也可以到流
        QrCodeUtil.generate(content, config, file);
    }

    /**
     * 格式化文件名称(主要处理文件中的特殊字符)
     */
    public String fileNameFormat(String fileName) {
        return RegExUtils.replaceAll(fileName, "['\\\\', '/', ':', '*', '?', '\"', '>', '<', '|']", "_");
    }
}
